/*
名称:	SQLite32.js
作者:	天一
功能:	SQLite3的同步接口
开创:	2023-08-12
最新:	2023-08-13
*/
// 打开数据库
async function openDB(config){
	return new Promise((callback)=>{
		plus.sqlite.openDatabase({
			...config,
			success: function(e){
				callback({code:1,msg:'打开数据库 成功!'})
			},
			fail: function(e){
				callback({code:0,msg:'打开数据库 失败: '+JSON.stringify(e)})
			}
		});
	})
}

//db是否打开
async function isOpen(config){
	return new Promise((callback)=>{
		if (plus.sqlite.isOpenDatabase(config)){
			callback({code:1,msg:'已经打开数据库。'});
		}else{
			callback({code:0,msg:'没有打开数据库！'});
		}
	});
}

// 关闭数据库
async function closeDB(config){
	return new Promise((callback)=>{
		plus.sqlite.closeDatabase({
			...config,
			success: function(e){
					console.log('closeDatabase success!');
					callback({code:1,msg:'关闭数据库成功。'});
				},
			fail: function(e){
					callback({code:0,msg:'关闭数据库失败：'+JSON.stringify(e)});
				}
		});
	});
}

// 执行SQL语句
async function executeSQL(config,sql){
	return new Promise((callback)=>{
		plus.sqlite.executeSql({
			...config,
			sql: sql,
			success: function(e){
					callback({code:1,msg:e});
				},
			fail: function(e){
					callback({code:0,msg:'执行SQL失败：'+JSON.stringify(e)});
				}
		});
	});
}

// 查询SQL语句
async function selectSQL(config,sql){
	return new Promise((callback)=>{
		plus.sqlite.selectSql({
			...config,
			sql: sql,
			success: function(data){
					callback({code:1,data:data,msg:'查询SQL成功'})
				},
			fail: function(e){
					callback({code:0,data:[],msg:'查询SQL失败: '+JSON.stringify(e)})
				}
			});
	});

}

// 执行事务(oper)begin,commit,rollback
async function transaction(config,oper){
	return new Promise((callback)=>{
		plus.sqlite.transaction({
			...config,
			operation:oper,
			success: function(e){
					callback({code:1,msg:'事务 '+oper+' 成功'});
			},
			fail: function(e){
					callback({code:0,msg:'事务 '+oper+' 失败：'+JSON.stringify(e)});
			}
		});
	});

}

module.exports = {closeDB,openDB,isOpen,executeSQL,selectSQL,transaction};
